// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
/*导入Vuex管理对象store*/
import store from './store/index'
/*配置store全局管理对象属性*/
Vue.prototype.$store = store;
/*导入jquery*/
import $ from 'jquery'
window.$=$
/*导入axios模块*/
import axios from 'axios'

/*定义axios请求的基本url地址*/
axios.defaults.baseURL="/shop"
/*全局设置axios请求的请求体类型是json格式*/
axios.defaults.headers.common["Content-type"] ="application/json"
/*定义一个axios的全局变量*/
Vue.prototype.$http = axios;

Vue.config.productionTip = false

/*定义请求拦截器*/
axios.interceptors.request.use(function (rs) {
    //请求之前执行的代码
    console.log("进入了请求拦截器");
    console.log(rs);
    //请求放行
   return rs;
},function (rs) {
    //请求错误执行的代码
   console.log("请求发了错误");
})

/*定义请求响应拦截器*/
axios.interceptors.response.use(function (rs) {
    //请求响应之前运行
   console.log("响应之前运行");
   if(rs.data.code==500){
     //执行的错误的逻辑
     console.log("错误")
   }
   //响应放行
   return rs;
},function (rs) {
  //请求响应错误执行代码
  console.log("请求响应发送错误");
})

/*定义路由导航钩子*/
/*to: 要到达的路由对象*/
/*from：从哪里来的路由对象*/
/*next 是放行函数*/
router.beforeEach(function (to,from,next) {
      //获取是否登录信息
      var name  = localStorage.getItem("name");
      console.log("name="+name);
      console.log(to)
      //判断那些路由是否需要拦截
      if(to.meta.isLogin==true){
        if(name==null){
          //回到登录页面
          next("/hello");
        }else{
          //放行
          next();
        }
      }else{
        next();
      }


})

/*定义一个全局指令，实现一个获取光标焦点*/
Vue.directive("focus",{
  inserted:function (el) {
        //获取焦点
        el.focus();
  }
})
/*定义一个全局的权限指令，实现权限菜单操作*/
Vue.directive("power",{
    inserted:function (el,binding) {
        //获取指令用户给的值
       const v = binding.value;
       //如果为false,就是没有权限
       if(v==false){
         //删除dom节点
         el.parentNode.removeChild(el);

       }
    }
})

/*定义一个全局指令：禁用鼠标右键操作*/
Vue.directive("rightKey",{
    inserted:function (el) {
      // 禁用右键菜单
      document.addEventListener('contextmenu', event => event.preventDefault());
    }
})

/*定义一个全局指令，完成v-show指令做的事情*/
Vue.directive("see",{
  componentUpdated:function (el,binding) {
        //获取用户定义的值
       const v = binding.value;
       console.log("v=="+v);
       if(v==true){
         //显示
         el.style.display ="block";
       }else{
         //不显示
         el.style.display ="none";
       }
    }
})

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'

})
